#include "Intreg.h"

int sirIntreg::getElement(int i)
{
return this->v[i];
}
int sirIntreg::nrElemente()
{
int i=0;
while (this->getElement(i)!=0) i++;
return i;
}
void sirIntreg::setElement(int x, int k)
{
    this->v[k]=x;
}
void sirIntreg::citire()
{
    int x,k=0;
    cout<<"Introduceti elementele sirului(ultimul va fi 0):"<<endl;
    do
    {
        cout<<"Introduceti elementul ("<<k+1<<") : ";cin>>x;
        this->v[k]=x;
        ++k;
    }
    while (x!=0);
    this->v[k]=0;
}
void sirIntreg::afisare()
{
    int k=this->nrElemente();
    for(int i=0;i<k;i++) cout<<"Elementul ("<<i+1<<") : "<<this->getElement(i)<<endl;

}
void sirIntreg::initializare()
{
    this->v[0]=0;
}
int sirIntreg::minim()
{
    int k=this->nrElemente();
    int min=this->getElement(0);
    for(int i=1;i<k;i++) if(min>this->getElement(i)) min=this->getElement(i);
    return min;
}
void sirIntreg::adaugaElement(int x)
{
    int k=this->nrElemente();
    this->v[k]=x;
    this->v[k+1]=0;
}
void sirIntreg::ordonare()
{
    int k=this->nrElemente(), aux;
    for (int i=0;i<k-1;i++)
    for (int j=i+1;j<k;j++)
    if(this->getElement(i)>this->getElement(j))
    {
        aux=this->v[i];
        this->v[i]=this->v[j];
        this->v[j]=aux;
    }
}
sirIntreg sirIntreg::operator+(sirIntreg x)
{
    sirIntreg suma;
    int n=this->nrElemente(), m=x.nrElemente(),i,s;
    if (n<m)
        {
            for(i=0;i<n;i++)
            {
            s=this->getElement(i)+x.getElement(i);
            suma.setElement(s,i);
            }
            for(i=n;i<m;i++)  {
            s=x.getElement(i);
            suma.setElement(s,i);
            }
            suma.setElement(0,m);
        }
    else if(n>m)
    {
            for(i=0;i<m;i++){
            s=this->getElement(i)+x.getElement(i);
            suma.setElement(s,i);
            }
            for(i=m;i<n;i++) {
            s=this->getElement(i);
            suma.setElement(s,i);
            }
            suma.setElement(0,n);
    }
    else
    {
            for(i=0;i<m;i++){
            s=this->getElement(i)+x.getElement(i);
            suma.setElement(s,i);
            }
            suma.setElement(0,m);

    }
    return suma;

}
sirIntreg sirIntreg::operator*(sirIntreg x)
{
    sirIntreg produs;
    int n=this->nrElemente(), m=x.nrElemente(),i,p;
    if (n<m)
        {
            for(i=0;i<n;i++)
            {
            p=this->getElement(i)*x.getElement(i);
            produs.setElement(p,i);
            }
            for(i=n;i<m;i++)  {
            p=x.getElement(i);
            produs.setElement(p,i);
            }
            produs.setElement(0,m);
        }
    else if(n>m)
    {
            for(i=0;i<m;i++){
            p=this->getElement(i)*x.getElement(i);
            produs.setElement(p,i);
            }
            for(i=m;i<n;i++) {
            p=this->getElement(i);
            produs.setElement(p,i);
            }
            produs.setElement(0,n);
    }
    else
    {
            for(i=0;i<m;i++){
            p=this->getElement(i)*x.getElement(i);
            produs.setElement(p,i);
            }
            produs.setElement(0,m);

    }
    return produs;

}
bool sirIntreg::operator==(sirIntreg x)
{
    int n=this->nrElemente(),m=x.nrElemente();
    if (n!=m) return false;
    else for(int i=0;i<n;i++) if(this->getElement(i)!=x.getElement(i)) return false;
    return true;
}
